//获得主界面
var mainDiv = document.getElementById("maindiv");

//获得开始界面
var startdiv = document.getElementById("startdiv");

//获得游戏中分数显示界面
var scorediv = document.getElementById("scorediv");
//获得分数界面
var scorelabel = document.getElementById("label");
//获得暂停界面
var suspenddiv = document.getElementById("suspenddiv");
//获得游戏结束界面
var enddiv = document.getElementById("enddiv");


//获得游戏结束后分数统计界面
var planscore = document.getElementById("planscore");


//初始化分数
var scores = 0;


/*
 创建飞机类
 */
function plan(hp, X, Y, sizeX, sizeY, score, dietime, sudu, boomimage, imagesrc) {
    this.planX = X;
    this.planY = Y;
    this.imagenode = null;
    this.planhp = hp;
    this.planscore = score;
    this.plansizeX = sizeX;
    this.plansizeY = sizeY;
    this.planboomimage = boomimage;

    this.planisdie = false;
    // 这是什么？

    this.plandietimes = 0;
    this.plandietime = dietime;
    this.plansudu = sudu;
//行为
    /*
    移动行为
         */
    this.planmove = function () {
        // 根据scores设置this.imagenode.style.top
        // 为this.imagenode.offsetTop + this.plansudu +
        //     1/2----5/px



        if (scores <= 50000) {
            this.imagenode.style.top = this.imagenode.offsetTop + this.plansudu + "px";
        } else if (scores > 50000 && scores <= 100000) {
            this.imagenode.style.top = this.imagenode.offsetTop + this.plansudu + 1 + "px";
        } else if (scores > 100000 && scores <= 150000) {
            this.imagenode.style.top = this.imagenode.offsetTop + this.plansudu + 2 + "px";
        } else if (scores > 150000 && scores <= 200000) {
            this.imagenode.style.top = this.imagenode.offsetTop + this.plansudu + 3 + "px";
        } else if (scores > 200000 && scores <= 300000) {
            this.imagenode.style.top = this.imagenode.offsetTop + this.plansudu + 4 + "px";
        } else {
            this.imagenode.style.top = this.imagenode.offsetTop + this.plansudu + 5 + "px";
        }


    };


    this.init = function () {
        this.imagenode = document.createElement("img");
        this.imagenode.style.left = this.planX + "px";
        this.imagenode.style.top = this.planY + "px";
        this.imagenode.src = imagesrc;
        mainDiv.appendChild(this.imagenode);
    };
    this.init();


}

/*
创建子弹类
 */
function bullet(X, Y, sizeX, sizeY, imagesrc) {
    this.bulletX = X;
    this.bulletY = Y;

    this.bulletimage = null;
    // ？？？图片

    this.bulletattach = 1;
    this.bulletsizeX = sizeX;
    this.bulletsizeY = sizeY;
//行为
    /*
     移动行为
     */
    this.bulletmove = function () {
        this.bulletimage.style.top = this.bulletimage.offsetTop - 20 + "px";
    };
    this.init = function () {
        this.bulletimage = document.createElement("img");
        this.bulletimage.style.left = this.bulletX + "px";
        this.bulletimage.style.top = this.bulletY + "px";

        this.bulletimage.src = imagesrc;
        // 图片？？

        mainDiv.appendChild(this.bulletimage);
    };
    this.init();
}

/*
 创建单行子弹类
 */
function oddbullet(X, Y) {
    bullet.call(this, X, Y, 6, 14, "image/bullet1.png");
}

/*
创建敌机类
 */
function enemy(hp, a, b, sizeX, sizeY, score, dietime, sudu, boomimage, imagesrc) {
    plan.call(this, hp, random(a, b), -100, sizeX, sizeY, score, dietime, sudu, boomimage, imagesrc);
}

//产生min到max之间的随机数
function random(min, max) {
    return Math.floor(min + Math.random() * (max - min));
}

/*
创建本方飞机类
 */
function ourplan(X, Y) {
    var imagesrc = "image/我的飞机.gif";
    plan.call(this, 1, X, Y, 66, 80, 0, 660, 0, "image/本方飞机爆炸.gif", imagesrc);
    this.imagenode.setAttribute('id', 'ourplan');
}

/*
 创建本方飞机
 */
var selfplan = new ourplan(120, 485);
//移动事件
var ourPlan = document.getElementById('ourplan');
var yidong = function () {
    var oevent = window.event || arguments[0];
    var chufa = oevent.srcElement || oevent.target;
    var selfplanX = oevent.clientX - 500;
    var selfplanY = oevent.clientY;
    ourPlan.style.left = selfplanX - selfplan.plansizeX / 2 + "px";
    ourPlan.style.top = selfplanY - selfplan.plansizeY / 2 + "px";
//    document.getElementsByTagName('img')[0].style.left=selfplanX-selfplan.plansizeX/2+"px";
//    document.getElementsByTagName('img')[0]..style.top=selfplanY-selfplan.plansizeY/2+"px";
};
/*
暂停事件
 */
var number = 0;
var zanting = function () {
    if (number === 0) {
        suspenddiv.style.display = "block";
        if (document.removeEventListener) {
            mainDiv.removeEventListener("mousemove", yidong, true);
            bodyobj.removeEventListener("mousemove", bianjie, true);
        } else if (document.detachEvent) {
            mainDiv.detachEvent("onmousemove", yidong);
            bodyobj.detachEvent("onmousemove", bianjie);
        }
        clearInterval(set);
        number = 1;
    } else {
        suspenddiv.style.display = "none";
        if (document.addEventListener) {
            mainDiv.addEventListener("mousemove", yidong, true);
            bodyobj.addEventListener("mousemove", bianjie, true);
        } else if (document.attachEvent) {
            mainDiv.attachEvent("onmousemove", yidong);
            bodyobj.attachEvent("onmousemove", bianjie);
        }
        set = setInterval(start, 20);
        number = 0;
    }
};
//判断本方飞机是否移出边界,如果移出边界,则取消mousemove事件,反之加上mousemove事件

// 判断边界的问题.

var bianjie = function () {
    var oevent = window.event || arguments[0];
    var bodyobjX = oevent.clientX;
    var bodyobjY = oevent.clientY;
    if (bodyobjX < 505 || bodyobjX > 815 || bodyobjY < 0 || bodyobjY > 568) {
        if (document.removeEventListener) {
            mainDiv.removeEventListener("mousemove", yidong, true);
        } else if (document.detachEvent) {
            mainDiv.detachEvent("onmousemove", yidong);
        }
    } else {
        if (document.addEventListener) {
            mainDiv.addEventListener("mousemove", yidong, true);
        } else if (document.attachEvent) {
            mainDiv.attachEvent("nomousemove", yidong);
        }
    }
};


//暂停界面重新开始事件
//function chongxinkaishi(){
//    location.reload(true);
//    startdiv.style.display="none";
//    maindiv.style.display="block";
//}
var bodyobj = document.getElementsByTagName("body")[0];


// 两种不同的添加事件的方法.???

if (document.addEventListener) {

    //为本方飞机添加移动和暂停
    mainDiv.addEventListener("mousemove", yidong, true);
    //为本方飞机添加暂停事件
    selfplan.imagenode.addEventListener("click", zanting, true);
    //为body添加判断本方飞机移出边界事件
    bodyobj.addEventListener("mousemove", bianjie, true);
    //为暂停界面的继续按钮添加暂停事件
    suspenddiv.getElementsByTagName("button")[0].addEventListener("click", zanting, true);
//    suspenddiv.getElementsByTagName("button")[1].addEventListener("click",chongxinkaishi,true);


    //为暂停界面的返回主页按钮添加事件
    suspenddiv.getElementsByTagName("button")[2].addEventListener("click", jixu, true);


} else if (document.attachEvent) {
    //为本方飞机添加移动
    mainDiv.attachEvent("onmousemove", yidong);
    //为本方飞机添加暂停事件
    selfplan.imagenode.attachEvent("onclick", zanting);
    //为body添加判断本方飞机移出边界事件
    bodyobj.attachEvent("onmousemove", bianjie);
    //为暂停界面的继续按钮添加暂停事件
    suspenddiv.getElementsByTagName("button")[0].attachEvent("onclick", zanting);
//    suspenddiv.getElementsByTagName("button")[1].attachEvent("click",chongxinkaishi,true);


    //为暂停界面的返回主页按钮添加事件
    suspenddiv.getElementsByTagName("button")[2].attachEvent("click", jixu, true);


}
//初始化隐藏本方飞机
selfplan.imagenode.style.display = "none";


/*
敌机对象数组
 */
var enemys = [];


/*
子弹对象数组
 */
var bullets = [];

// 子弹。

var mark = 0;
var mark1 = 0;


var backgroundPositionY = 0;


/*
开始函数
 */

// 单击按钮,反复执行,开始函数.

function start() {
    mainDiv.style.backgroundPositionY = backgroundPositionY + "px";
    backgroundPositionY += 0.5;
    // ??
    if (backgroundPositionY === 568) {
        // 高度568像素.背景.高度.
        backgroundPositionY = 0;
    }
    mark++;
    /*
    创建敌方飞机
     */

    // ????
    if (mark === 20) {
        mark1++;


        //中飞机
        if (mark1 % 5 === 0) {
            enemys.push(new enemy(6, 25, 274, 46, 60, 5000, 360, random(1, 3), "image/中飞机爆炸.gif", "image/enemy3_fly_1.png"));
        }
        //大飞机
        if (mark1 === 20) {
            enemys.push(new enemy(12, 57, 210, 110, 164, 30000, 540, 1, "image/大飞机爆炸.gif", "image/enemy2_fly_1.png"));
            mark1 = 0;
        }
        //小飞机
        else {
            enemys.push(new enemy(1, 19, 286, 34, 24, 1000, 360, random(1, 4), "image/小飞机爆炸.gif", "image/enemy1_fly_1.png"));
        }


        mark = 0;
    }

    /*
    移动敌方飞机
     */
    var enemyslen = enemys.length;

    for (var i = 0; i < enemyslen; i++) {


        // 移动飞机。
        if (enemys[i].planisdie !== true) {
            enemys[i].planmove();

            // 移动飞机函数.

        }

        /*
         如果敌机超出边界,删除敌机
         */
        if (enemys[i].imagenode.offsetTop > 568) {
            mainDiv.removeChild(enemys[i].imagenode);
            enemys.splice(i, 1);
            enemyslen--;

            // 长度--
        }
        //当敌机死亡标记为true时，经过一段时间后清除敌机
        if (enemys[i].planisdie === true) {
            enemys[i].plandietimes += 20;
            if (enemys[i].plandietimes === enemys[i].plandietime) {
                mainDiv.removeChild(enemys[i].imagenode);
                enemys.splice(i, 1);
                enemyslen--;

                // 长度--
            }
        }
    }



    /*
    创建子弹
    */
    if (mark % 5 === 0) {
        bullets.push(new oddbullet(parseInt(selfplan.imagenode.style.left) + 31, parseInt(selfplan.imagenode.style.top) - 10));
    }

    /*
    移动子弹
    */
    var bulletslen = bullets.length;
    // 子弹长度？？？个数？

    for (var i = 0; i < bulletslen; i++) {

        bullets[i].bulletmove();
        // 执行子弹移动函数???

        // 所有子弹移动？？？


        /*
        如果子弹超出边界,删除子弹
        */


        if (bullets[i].bulletimage.offsetTop < 0) {
            // ????

            mainDiv.removeChild(bullets[i].bulletimage);
            // ？？？？

            bullets.splice(i, 1);
            // 去除这个子弹。

            bulletslen--;
            // 子弹个数--
        }

    }


    /*
    碰撞判断
    */
    for (var k = 0; k < bulletslen; k++) {

        for (var j = 0; j < enemyslen; j++) {

            // 在敌机个数范围内.

            //判断碰撞本方飞机
            if (enemys[j].planisdie === false) {
                if (enemys[j].imagenode.offsetLeft + enemys[j].plansizeX >= selfplan.imagenode.offsetLeft && enemys[j].imagenode.offsetLeft <= selfplan.imagenode.offsetLeft + selfplan.plansizeX) {
                    if (enemys[j].imagenode.offsetTop + enemys[j].plansizeY >= selfplan.imagenode.offsetTop + 40 && enemys[j].imagenode.offsetTop <= selfplan.imagenode.offsetTop - 20 + selfplan.plansizeY) {
                        //碰撞本方飞机，游戏结束，统计分数
                        selfplan.imagenode.src = "image/本方飞机爆炸.gif";
                        enddiv.style.display = "block";
                        planscore.innerHTML = scores;

                        // 分数显示.

                        if (document.removeEventListener) {
                            mainDiv.removeEventListener("mousemove", yidong, true);
                            bodyobj.removeEventListener("mousemove", bianjie, true);
                        } else if (document.detachEvent) {
                            mainDiv.detachEvent("onmousemove", yidong);
                            bodyobj.removeEventListener("mousemove", bianjie, true);
                        }
                        clearInterval(set);
                    }
                }
                //判断子弹与敌机碰撞
                if ((bullets[k].bulletimage.offsetLeft + bullets[k].bulletsizeX > enemys[j].imagenode.offsetLeft) && (bullets[k].bulletimage.offsetLeft < enemys[j].imagenode.offsetLeft + enemys[j].plansizeX)) {
                    if (bullets[k].bulletimage.offsetTop <= enemys[j].imagenode.offsetTop + enemys[j].plansizeY && bullets[k].bulletimage.offsetTop + bullets[k].bulletsizeY >= enemys[j].imagenode.offsetTop) {
                        //敌机血量减子弹攻击力
                        enemys[j].planhp = enemys[j].planhp - bullets[k].bulletattach;


                        //敌机血量为0，敌机图片换为爆炸图片，死亡标记为true，计分

                        if (enemys[j].planhp === 0) {
                            // planhp代表血量

                            scores = scores + enemys[j].planscore;
                            scorelabel.innerHTML = scores;
                            enemys[j].imagenode.src = enemys[j].planboomimage;
                            enemys[j].planisdie = true;
                        }
                        //删除子弹
                        mainDiv.removeChild(bullets[k].bulletimage);
                        bullets.splice(k, 1);
                        bulletslen--;
                        // 子弹个数--
                        break;
                    }
                }
            }
        }
        // 内循环。

    }
    // 外循环。


}

/*
开始游戏按钮点击事件
 */
var set;

// 开始事件.

// 这里开始事件.

function begin() {

    startdiv.style.display = "none";
    // 消除开始界面.
    mainDiv.style.display = "block";
    // 游戏主界面

    selfplan.imagenode.style.display = "block";
    // 显示自己的飞机.
    scorediv.style.display = "block";
    // 显示.分数.
    /*

     调用开始函数
     */
    set = setInterval(start, 20);

    // 这里调用了开始函数???
}


//游戏结束后点击继续按钮事件
function jixu() {
    // 继续重新加载???

    location.reload(true);
}

/*
    完成界面的初始化
    敌方小飞机一个
    我方飞机一个
 */
